package unq.tpi.persistencia.alumnos.dao.hbm;

import java.util.List;

import org.hibernate.Query;

import unq.tpi.persistencia.alumnos.arq.runner.HibernateRunner;
import unq.tpi.persistencia.alumnos.dao.AlumnoDAO;
import unq.tpi.persistencia.alumnos.model.Alumno;
import unq.tpi.persistencia.alumnos.model.Materia;

public class AlumnoDAOHbm implements AlumnoDAO {

	public Alumno getPorLegajo(String legajo) {
		String hql = "from Alumno as a " +
						"where a.legajo = :numLegajo";
		Query query = HibernateRunner.currentSession().createQuery(hql);
		query.setParameter("numLegajo", legajo);
		
		Alumno result = (Alumno) query.uniqueResult();
		return result;
	}

	public void save(Alumno alumno) {
		HibernateRunner.currentSession().save(alumno);
	}
	
	public void delete(Alumno alumno){
		HibernateRunner.currentSession().delete(alumno);
	}

	public List<Alumno> getInscriptosA(Materia materia) {
		String hql = "select c.alumno from Cursada as c " +
						"inner join c.alumno " +
						"where c.materia = :materia";
		Query query = HibernateRunner.currentSession().createQuery(hql);
		query.setEntity("materia", materia);

		List<Alumno> result = query.list();
		
		return result;
	}
}
